Micron Document
🎖️GitЯра🎖️

mesh_service_example/src/main/kotlin/com/meshtastic/android/meshserviceexample/MainActivity.kt e249461e3c77e41a3928c01537da0a173c687621 (e249461e) Text, 7.43 KB

T8b949e/*
* Copyright (c) 2025-2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tf0883e@fileTb4b4b4:Te6edf3SuppressTb4b4b4(Ta5d6ff"Ta5d6ffDEPRECATIONTa5d6ff"Tb4b4b4)

Tff7b72package T7ee787com.meshtastic.android.meshserviceexample

Tff7b72import T7ee787android.content.BroadcastReceiver
Tff7b72import T7ee787android.content.ComponentName
Tff7b72import T7ee787android.content.Context
Tff7b72import T7ee787android.content.Intent
Tff7b72import T7ee787android.content.IntentFilter
Tff7b72import T7ee787android.content.ServiceConnection
Tff7b72import T7ee787android.content.pm.PackageManager
Tff7b72import T7ee787android.os.Build
Tff7b72import T7ee787android.os.Bundle
Tff7b72import T7ee787android.os.IBinder
Tff7b72import T7ee787android.util.Log
Tff7b72import T7ee787androidx.activity.ComponentActivity
Tff7b72import T7ee787androidx.activity.compose.setContent
Tff7b72import T7ee787androidx.activity.enableEdgeToEdge
Tff7b72import T7ee787androidx.activity.viewModels
Tff7b72import T7ee787androidx.compose.foundation.isSystemInDarkTheme
Tff7b72import T7ee787androidx.compose.material3.MaterialTheme
Tff7b72import T7ee787androidx.compose.material3.darkColorScheme
Tff7b72import T7ee787androidx.compose.material3.dynamicDarkColorScheme
Tff7b72import T7ee787androidx.compose.material3.dynamicLightColorScheme
Tff7b72import T7ee787androidx.compose.material3.lightColorScheme
Tff7b72import T7ee787androidx.compose.runtime.Composable
Tff7b72import T7ee787androidx.compose.ui.platform.LocalContext
Tff7b72import T7ee787org.meshtastic.core.api.MeshtasticIntent
Tff7b72import T7ee787org.meshtastic.core.service.IMeshService

Tff7b72private Tff7b72const Tff7b72val Te6edf3TAGTb4b4b4: Tffa657String Tff7b72= Ta5d6ff"Ta5d6ffMeshServiceExampleTa5d6ff"

T8b949e/**
* MainActivity for the MeshServiceExample application.
*
* **DEPRECATED.** This entire module (`mesh_service_example`) is scheduled for removal in a future release. Do not use
* it as a template for new integrations. See `:core:api` README for the current public API surface.
*/
Tf0883e@DeprecatedTb4b4b4(
Te6edf3message Tff7b72=
Ta5d6ff"Ta5d6ffmesh_service_example is deprecated and will be removed in a future release. Ta5d6ff" Tff7b72+
Ta5d6ff"Ta5d6ffSee core/api/README.md for integration guidance.Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Tff7b72class T56d364MainActivity Tb4b4b4: Te6edf3ComponentActivityTb4b4b4(Tb4b4b4) Tb4b4b4{

Tff7b72private Tff7b72var Te6edf3meshServiceTb4b4b4: Te6edf3IMeshService? Tff7b72= Tff7b72null
Tff7b72private Tff7b72var Te6edf3isMeshServiceBound Tff7b72= Tff7b72false

Tff7b72private Tff7b72val Te6edf3viewModelTb4b4b4: Te6edf3MeshServiceViewModel Tff7b72by Te6edf3viewModelsTb4b4b4(Tb4b4b4)

Tff7b72private Tff7b72val Te6edf3serviceConnection Tff7b72=
Tff7b72object Tb4b4b4: T56d364ServiceConnection Tb4b4b4{
Tff7b72override Tff7b72fun Td2a8ffonServiceConnectedTb4b4b4(Te6edf3nameTb4b4b4: Te6edf3ComponentName?Tb4b4b4, Te6edf3serviceTb4b4b4: Te6edf3IBinder?Tb4b4b4) Tb4b4b4{
Te6edf3meshService Tff7b72= Te6edf3IMeshServiceTb4b4b4.Te6edf3StubTb4b4b4.Te6edf3asInterfaceTb4b4b4(Te6edf3serviceTb4b4b4)
Te6edf3LogTb4b4b4.Te6edf3iTb4b4b4(Te6edf3TAGTb4b4b4, Ta5d6ff"Ta5d6ffConnected to MeshServiceTa5d6ff"Tb4b4b4)
Te6edf3isMeshServiceBound Tff7b72= Tff7b72true
Te6edf3viewModelTb4b4b4.Te6edf3onServiceConnectedTb4b4b4(Te6edf3meshServiceTb4b4b4)
Tb4b4b4}

Tff7b72override Tff7b72fun Td2a8ffonServiceDisconnectedTb4b4b4(Te6edf3nameTb4b4b4: Te6edf3ComponentName?Tb4b4b4) Tb4b4b4{
Te6edf3meshService Tff7b72= Tff7b72null
Te6edf3isMeshServiceBound Tff7b72= Tff7b72false
Te6edf3viewModelTb4b4b4.Te6edf3onServiceDisconnectedTb4b4b4(Tb4b4b4)
Tb4b4b4}
Tb4b4b4}

Tff7b72private Tff7b72val Te6edf3meshtasticReceiver Tff7b72=
Tff7b72object Tb4b4b4: T56d364BroadcastReceiverTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72override Tff7b72fun Td2a8ffonReceiveTb4b4b4(Te6edf3contextTb4b4b4: Te6edf3Context?Tb4b4b4, Te6edf3intentTb4b4b4: Te6edf3Intent?Tb4b4b4) Tb4b4b4{
Te6edf3LogTb4b4b4.Te6edf3dTb4b4b4(Te6edf3TAGTb4b4b4, Ta5d6ff"Ta5d6ffBroadcastReceiver onReceive: Tffd700${Te6edf3intentTff7b72?.Te6edf3actionTffd700}Ta5d6ff"Tb4b4b4)
Te6edf3intentTff7b72?.Te6edf3let Tb4b4b4{ Te6edf3viewModelTb4b4b4.Te6edf3handleIncomingIntentTb4b4b4(Tffa657itTb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tff7b72override Tff7b72fun Td2a8ffonCreateTb4b4b4(Te6edf3savedInstanceStateTb4b4b4: Te6edf3Bundle?Tb4b4b4) Tb4b4b4{
Tff7b72superTb4b4b4.Te6edf3onCreateTb4b4b4(Te6edf3savedInstanceStateTb4b4b4)
Te6edf3enableEdgeToEdgeTb4b4b4(Tb4b4b4)

Te6edf3bindMeshServiceTb4b4b4(Tb4b4b4)

Tff7b72val Te6edf3intentFilter Tff7b72=
Te6edf3IntentFilterTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3apply Tb4b4b4{
Te6edf3addActionTb4b4b4(Te6edf3MeshtasticIntentTb4b4b4.Te6edf3ACTION_NODE_CHANGETb4b4b4)
Te6edf3addActionTb4b4b4(Te6edf3MeshtasticIntentTb4b4b4.Te6edf3ACTION_CONNECTION_CHANGEDTb4b4b4)
Te6edf3addActionTb4b4b4(Te6edf3MeshtasticIntentTb4b4b4.Te6edf3ACTION_MESH_CONNECTEDTb4b4b4)
Te6edf3addActionTb4b4b4(Te6edf3MeshtasticIntentTb4b4b4.Te6edf3ACTION_MESH_DISCONNECTEDTb4b4b4)
Te6edf3addActionTb4b4b4(Te6edf3MeshtasticIntentTb4b4b4.Te6edf3ACTION_MESSAGE_STATUSTb4b4b4)
Te6edf3addActionTb4b4b4(Te6edf3MeshtasticIntentTb4b4b4.Te6edf3ACTION_RECEIVED_TEXT_MESSAGE_APPTb4b4b4)
Te6edf3addActionTb4b4b4(Te6edf3MeshtasticIntentTb4b4b4.Te6edf3ACTION_RECEIVED_POSITION_APPTb4b4b4)
Te6edf3addActionTb4b4b4(Te6edf3MeshtasticIntentTb4b4b4.Te6edf3ACTION_RECEIVED_TELEMETRY_APPTb4b4b4)
Te6edf3addActionTb4b4b4(Te6edf3MeshtasticIntentTb4b4b4.Te6edf3ACTION_RECEIVED_NODEINFO_APPTb4b4b4)
Te6edf3addActionTb4b4b4(Te6edf3MeshtasticIntentTb4b4b4.Te6edf3ACTION_RECEIVED_ATAK_PLUGINTb4b4b4)
Te6edf3addActionTb4b4b4(Te6edf3MeshtasticIntentTb4b4b4.Te6edf3ACTION_RECEIVED_ATAK_FORWARDERTb4b4b4)
Te6edf3addActionTb4b4b4(Te6edf3MeshtasticIntentTb4b4b4.Te6edf3ACTION_RECEIVED_DETECTION_SENSOR_APPTb4b4b4)
Te6edf3addActionTb4b4b4(Te6edf3MeshtasticIntentTb4b4b4.Te6edf3ACTION_RECEIVED_PRIVATE_APPTb4b4b4)
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3BuildTb4b4b4.Te6edf3VERSIONTb4b4b4.Te6edf3SDK_INT Tff7b72>Tff7b72= Te6edf3BuildTb4b4b4.Te6edf3VERSION_CODESTb4b4b4.Te6edf3TIRAMISUTb4b4b4) Tb4b4b4{
Te6edf3registerReceiverTb4b4b4(Te6edf3meshtasticReceiverTb4b4b4, Te6edf3intentFilterTb4b4b4, Te6edf3RECEIVER_EXPORTEDTb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffUnspecifiedRegisterReceiverFlagTa5d6ff"Tb4b4b4)
Te6edf3registerReceiverTb4b4b4(Te6edf3meshtasticReceiverTb4b4b4, Te6edf3intentFilterTb4b4b4)
Tb4b4b4}

Te6edf3setContent Tb4b4b4{ Te6edf3ExampleTheme Tb4b4b4{ Te6edf3MainScreenTb4b4b4(Te6edf3viewModelTb4b4b4) Tb4b4b4} Tb4b4b4}
Tb4b4b4}

Tff7b72override Tff7b72fun Td2a8ffonDestroyTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72superTb4b4b4.Te6edf3onDestroyTb4b4b4(Tb4b4b4)
Te6edf3unregisterReceiverTb4b4b4(Te6edf3meshtasticReceiverTb4b4b4)
Te6edf3unbindMeshServiceTb4b4b4(Tb4b4b4)
Tb4b4b4}

Tff7b72private Tff7b72fun Td2a8ffbindMeshServiceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Te6edf3LogTb4b4b4.Te6edf3iTb4b4b4(Te6edf3TAGTb4b4b4, Ta5d6ff"Ta5d6ffAttempting to bind to Mesh Service...Ta5d6ff"Tb4b4b4)
Tff7b72val Te6edf3intent Tff7b72= Te6edf3IntentTb4b4b4(Ta5d6ff"Ta5d6ffcom.geeksville.mesh.ServiceTa5d6ff"Tb4b4b4)

Tff7b72val Te6edf3resolveInfo Tff7b72=
Tff7b72if Tb4b4b4(Te6edf3BuildTb4b4b4.Te6edf3VERSIONTb4b4b4.Te6edf3SDK_INT Tff7b72>Tff7b72= Te6edf3BuildTb4b4b4.Te6edf3VERSION_CODESTb4b4b4.Te6edf3TIRAMISUTb4b4b4) Tb4b4b4{
Te6edf3packageManagerTb4b4b4.Te6edf3queryIntentServicesTb4b4b4(Te6edf3intentTb4b4b4, Te6edf3PackageManagerTb4b4b4.Te6edf3ResolveInfoFlagsTb4b4b4.Te6edf3ofTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Tf0883e@SuppressTb4b4b4(Ta5d6ff"Ta5d6ffDEPRECATIONTa5d6ff"Tb4b4b4)
Te6edf3packageManagerTb4b4b4.Te6edf3queryIntentServicesTb4b4b4(Te6edf3intentTb4b4b4, T79c0ff0Tb4b4b4)
Tb4b4b4}

Tff7b72if Tb4b4b4(Te6edf3resolveInfoTb4b4b4.Te6edf3isNotEmptyTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3serviceInfo Tff7b72= Te6edf3resolveInfoTff7b72[T79c0ff0Tff7b72]Tb4b4b4.Te6edf3serviceInfo
Te6edf3intentTb4b4b4.Te6edf3setClassNameTb4b4b4(Te6edf3serviceInfoTb4b4b4.Te6edf3packageNameTb4b4b4, Te6edf3serviceInfoTb4b4b4.Te6edf3nameTb4b4b4)
Te6edf3LogTb4b4b4.Te6edf3iTb4b4b4(Te6edf3TAGTb4b4b4, Ta5d6ff"Ta5d6ffFound service in package: Tffd700${Te6edf3serviceInfoTb4b4b4.Te6edf3packageNameTffd700}Ta5d6ff"Tb4b4b4)
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3LogTb4b4b4.Te6edf3wTb4b4b4(Te6edf3TAGTb4b4b4, Ta5d6ff"Ta5d6ffNo service found for action com.geeksville.mesh.Service. Falling back to default.Ta5d6ff"Tb4b4b4)
Te6edf3intentTb4b4b4.Te6edf3setClassNameTb4b4b4(Ta5d6ff"Ta5d6ffcom.geeksville.meshTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fforg.meshtastic.core.service.MeshServiceTa5d6ff"Tb4b4b4)
Tb4b4b4}

Tff7b72val Te6edf3success Tff7b72= Te6edf3bindServiceTb4b4b4(Te6edf3intentTb4b4b4, Te6edf3serviceConnectionTb4b4b4, Te6edf3BIND_AUTO_CREATETb4b4b4)
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3successTb4b4b4) Tb4b4b4{
Te6edf3LogTb4b4b4.Te6edf3eTb4b4b4(Te6edf3TAGTb4b4b4, Ta5d6ff"Ta5d6ffbindService returned falseTa5d6ff"Tb4b4b4)
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4: Te6edf3SecurityExceptionTb4b4b4) Tb4b4b4{
Te6edf3LogTb4b4b4.Te6edf3eTb4b4b4(Te6edf3TAGTb4b4b4, Ta5d6ff"Ta5d6ffSecurityException while binding: Tffd700${Te6edf3eTb4b4b4.Te6edf3messageTffd700}Ta5d6ff"Tb4b4b4)
Tb4b4b4}
Tb4b4b4}

Tff7b72private Tff7b72fun Td2a8ffunbindMeshServiceTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3isMeshServiceBoundTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Te6edf3unbindServiceTb4b4b4(Te6edf3serviceConnectionTb4b4b4)
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4: Te6edf3IllegalArgumentExceptionTb4b4b4) Tb4b4b4{
Te6edf3LogTb4b4b4.Te6edf3wTb4b4b4(Te6edf3TAGTb4b4b4, Ta5d6ff"Ta5d6ffMeshService not registered or already unbound: Tffd700${Te6edf3eTb4b4b4.Te6edf3messageTffd700}Ta5d6ff"Tb4b4b4)
Tb4b4b4}
Te6edf3isMeshServiceBound Tff7b72= Tff7b72false
Te6edf3meshService Tff7b72= Tff7b72null
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Tf0883e@Composable
Tff7b72fun Td2a8ffExampleThemeTb4b4b4(Te6edf3darkThemeTb4b4b4: Tffa657Boolean Tff7b72= Te6edf3isSystemInDarkThemeTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3contentTb4b4b4: Tf0883e@Composable Tb4b4b4(Tb4b4b4) Tff7b72-Tff7b72> Tffa657UnitTb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3colorScheme Tff7b72=
Tff7b72when Tb4b4b4{
Te6edf3BuildTb4b4b4.Te6edf3VERSIONTb4b4b4.Te6edf3SDK_INT Tff7b72>Tff7b72= Te6edf3BuildTb4b4b4.Te6edf3VERSION_CODESTb4b4b4.Te6edf3S Tff7b72-Tff7b72> Tb4b4b4{
Tff7b72val Te6edf3context Tff7b72= Te6edf3LocalContextTb4b4b4.Te6edf3current
Tff7b72if Tb4b4b4(Te6edf3darkThemeTb4b4b4) Te6edf3dynamicDarkColorSchemeTb4b4b4(Te6edf3contextTb4b4b4) Tff7b72else Te6edf3dynamicLightColorSchemeTb4b4b4(Te6edf3contextTb4b4b4)
Tb4b4b4}
Te6edf3darkTheme Tff7b72-Tff7b72> Te6edf3darkColorSchemeTb4b4b4(Tb4b4b4)
Tff7b72else Tff7b72-Tff7b72> Te6edf3lightColorSchemeTb4b4b4(Tb4b4b4)
Tb4b4b4}

Te6edf3MaterialThemeTb4b4b4(Te6edf3colorScheme Tff7b72= Te6edf3colorSchemeTb4b4b4, Te6edf3content Tff7b72= Te6edf3contentTb4b4b4)
Tb4b4b4}

Served by rngit 1.5.0 - Generated in 0.06s